//package com.emar.adx.yiqifa.service;
//
//import com.emar.adx.yiqifa.dao.FeedbackDao;
//import com.emar.adx.yiqifa.dao.MongoDBDao;
//import com.emar.adx.yiqifa.entity.Feedback;
//import com.emar.adx.yiqifa.util.FunctionUtil;
//import com.mongodb.BasicDBObject;
//import com.mongodb.DBCollection;
//import com.mongodb.DBCursor;
//import com.mongodb.DBObject;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Service;
//import org.springframework.transaction.annotation.Transactional;
//
//import java.util.ArrayList;
//import java.util.HashMap;
//import java.util.List;
//import java.util.Map;
//
///**
// * Created by Administrator on 2015/11/17.
// */
//@Service
//@Transactional(value = "transactionManager")
//public class FeedbackService {
//    private static final Logger logger = LoggerFactory.getLogger(FeedbackService.class);
//
//    @Autowired
//    private MongoDBDao<Object> mongoDBDao;
//    @Autowired
//    private FeedbackDao feedbackDao;
//
//    public void mongoToMysql(int skip, int limit, String tableName) throws Exception {
//        long start = System.currentTimeMillis();
//
//        logger.info("start mongo data:" + start);
//        DBCollection dbCollection = mongoDBDao.getCollection(tableName);
//
//        DBCursor cursor = dbCollection.find().skip(skip).limit(limit);
//
//        List<Feedback> insertDatas = new ArrayList<Feedback>();
//        int imports = 0;
//        boolean isSecond = false;
//
//        while (imports < limit) {
//
//            while (cursor.hasNext()) {
//                DBObject obj = cursor.next();
//                Feedback f = new Feedback();
//                f.setFeedbackKey(String.valueOf(obj.get("k")));
//                f.setPvId(String.valueOf(obj.get("pvid")));
//                f.setcTime(FunctionUtil.parseLong(String.valueOf(obj.get("d")), 0));
//                f.setUserId(FunctionUtil.parseLong(String.valueOf(obj.get("u")), 0));
//                f.setEuId(String.valueOf(obj.get("e")));
//                f.setLinkType(String.valueOf(obj.get("s")));
//                f.setClickIP(String.valueOf(obj.get("p")));
//                f.setSpm(String.valueOf(obj.get("spm")));
//                f.setLinkId(FunctionUtil.parseLong(String.valueOf(obj.get("l")), 0));
//                f.setPtype(String.valueOf(obj.get("ptype")));
//                f.setWebsiteId(FunctionUtil.parseLong(String.valueOf(obj.get("w")), 0));
//
//
//                Map<String, String> feedbackValue = new HashMap<String, String>();
//                feedbackValue.put("d", String.valueOf(obj.get("d")));
//                feedbackValue.put("u", String.valueOf(obj.get("u")));
//                feedbackValue.put("e", String.valueOf(obj.get("e")));
//                feedbackValue.put("s", String.valueOf(obj.get("s")));
//                feedbackValue.put("p", String.valueOf(obj.get("p")));
//                feedbackValue.put("l", String.valueOf(obj.get("l")));
//                feedbackValue.put("spm", String.valueOf(obj.get("spm")));
//                feedbackValue.put("ptype", String.valueOf(obj.get("ptype")));
//                feedbackValue.put("pvid", String.valueOf(obj.get("pvid")));
//                feedbackValue.put("w", String.valueOf(obj.get("w")));
//
//                f.setFeedbackValue(feedbackValue.toString());
//                insertDatas.add(f);
//
//                imports++;
//
//                if (imports == limit) {
//                    long end = System.currentTimeMillis();
//                    logger.info("end mongo data:" + end);
//                    logger.info("get mongo data cost :" + (end - start));
//
//                    long startmysql = System.currentTimeMillis();
//                    logger.info("start mysql data:" + startmysql);
//                    int[] aa = feedbackDao.batchUpdate(tableName, insertDatas);
//                    long endmysql = System.currentTimeMillis();
//                    logger.info("end mysql data:" + (endmysql - startmysql));
//                    //清除临时数据集合
//                    insertDatas.clear();
//                }
//            }
//
//            if(imports<limit ){
//                if (isSecond) {
//                    long end = System.currentTimeMillis();
//                    logger.info("second end mongo data:" + end);
//                    logger.info("second get mongo data cost :" + (end - start));
//
//                    long startmysql = System.currentTimeMillis();
//                    logger.info("second start mysql data:" + startmysql);
//                    int[] aa = feedbackDao.batchUpdate(tableName, insertDatas);
//                    long endmysql = System.currentTimeMillis();
//                    logger.info("second end mysql data:" + (endmysql - startmysql));
//                    //清除临时数据集合
//                    insertDatas.clear();
//                    break;
//                }
//                cursor.close();
//                isSecond = true;
//                cursor = dbCollection.find().skip(skip).limit(limit);
//            }
//        }
//        cursor.close();
//    }
//
//    public long getMongoCount(String tableName) {
//        DBCollection dbCollection = mongoDBDao.getCollection(tableName);
//        long total = dbCollection.getCount();
//        logger.info("total = "+total);
//        return total;
//    }
//
//    public int getFeedbackCount(String tableName){
//        return feedbackDao.getCount(tableName);
//    }
//
//    public List<Feedback> findFeedbackList(String tableName,Feedback feedback,int offset,int limit){
//        return feedbackDao.findFeedbackList(tableName,feedback,offset,limit);
//    }
//
//    public Feedback findOneByKey(String tableName,String key){
//        return feedbackDao.findOneByKey(tableName,key);
//    }
//}
